home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1996 July / C-C++ Users Group Library July 1996.iso / vol_400 / 402_01 / cforms-2.2 / src / comp.h < prev    next >
Encoding:
C/C++ Source or Header  |  1993-07-20  |  4.3 KB  |  172 lines

  1. /*******************************************************************************
  2.  *
  3.  *        C O M P . H
  4.  *        -----------
  5.  *
  6.  * Description:
  7.  *    Headerfile for compiler.
  8.  *
  9.  * Revision:
  10.  *    Ver    Date    By        Reason
  11.  *    ---    ----    --        ------
  12.  *    1.00    900619    Lars Berntzon    Created
  13.  *
  14.  ******************************************************************************/
  15. #ifndef _COMP_H
  16. #define _COMP_H
  17. #ifndef lint
  18. static volatile char sccs_comp_h[] = "@(#) comp.h,v 1.12 1993/07/20 23:58:12 lasse Exp";
  19. #endif
  20.  
  21. #include "cforms.h"
  22.  
  23. #define offsetof(type, item) (((int) &( ((type *)2)->item )) - 2)
  24.  
  25. #define NEXT_VIEWPORT(ptr) ((struct viewport *)ptr->link.next)
  26. #define NEXT_PICTURE(ptr)  ((struct picture *)ptr->link.next)
  27. #define NEXT_FIELD(ptr)    ((struct field *)ptr->link.next)
  28. #define NEXT_EVENT(ptr)    ((struct event *)ptr->link.next)
  29. #define NEXT_LITERAL(ptr)  ((struct literal *)ptr->link.next)
  30. #define NEXT_CCODE(ptr)    ((struct ccode *)ptr->link.next)
  31.  
  32. #define TYPE_VIEWPORT    1
  33. #define TYPE_PICTURE    2
  34. #define TYPE_FIELD    3
  35. #define TYPE_EVENT    4
  36. #define TYPE_LITERAL    5
  37. #define TYPE_CCODE    6
  38.  
  39. #define memalloc(size)        _memalloc(__FILE__, __LINE__, (size))
  40. #define strduplicate(str)    _strduplicate(__FILE__, __LINE__, (str))
  41. #define reallocmem(ptr, size)        _reallocmem(__FILE__, __LINE__, (ptr), (size))
  42.  
  43. #define N_KEYS    (sizeof keys / sizeof keys[0])
  44. #define N_CMDS    (sizeof lookup / sizeof lookup[0])
  45.  
  46. #define CF_CENTER 2000
  47. #define CF_MIDDLE 3000
  48. #define CF_MAX    4000
  49.  
  50. #define ISCENTER(pos) (((pos) > CF_CENTER / 2) && ((pos) < CF_MIDDLE))
  51. #define ISMAX(pos) (((pos) > CF_MIDDLE)  && ((pos) <= CF_MAX))
  52.  
  53. #define MAXPOS    128            /* Maximum number of chars in one statement block
  54. */
  55.  
  56. /* Common used struct for command parsing */
  57. struct lookup_s {
  58.     char *cmd;
  59.     int (*func)();
  60. };
  61.  
  62. struct keys_s {
  63.     char *key;
  64.     char *code;
  65. };
  66.  
  67. struct stmt {
  68.     struct stmt *next;        /* Next statement block in list        */
  69.     int pos;            /* Current storage position        */
  70.     int line;            /* Line number to this statement    */
  71.     char txt[MAXPOS];        /* Actual text                */
  72. };
  73.  
  74. struct link {
  75.     struct link *next;
  76.     int type;
  77.     char *name;
  78. };
  79.  
  80. struct literal {
  81.     struct link link;
  82.     struct xy pos;
  83.     unsigned long flags;
  84. };
  85.  
  86. struct viewport {
  87.     struct link link;
  88.     struct xy pos;
  89.     struct xy size;
  90. };
  91.  
  92. struct ccode {
  93.     struct link link;
  94.     struct stmt *stmt;
  95. };
  96.  
  97. struct event {
  98.     struct link link;
  99.     char *type;
  100.     char *code;
  101.     int global;
  102.     struct stmt *stmt;
  103. };
  104.  
  105. struct field {
  106.     struct link link;
  107.     struct xy pos;
  108.     struct event *event;
  109.     char *lvalue;
  110.     char *rvalue;
  111.     char *type;
  112.     char *value;
  113.     int len;
  114.     unsigned long flags;
  115. };
  116.  
  117. struct picture {
  118.     struct link link;
  119.     struct viewport *viewport;
  120.     struct field *field;
  121.     struct literal *literal;
  122.     struct event *event;
  123.     unsigned long flags;
  124. };
  125.  
  126. struct list {
  127.     struct viewport *viewport;
  128.     struct picture *picture;
  129.     struct event *event;
  130.     struct ccode *ccode;
  131. };
  132.  
  133. extern int strequ(char *s1, char *s2);    /* Case insensitive strcmp    */
  134. extern void fatal(char *str);        /* Give message and abort    */
  135. extern void usage(void);        /* Give usage message and abort    */
  136. extern void error(char *);        /* Give error message + lineno    */
  137.  
  138.     /* malloc with memory check    */
  139. extern void *_memalloc(char *file, int line, int size);
  140. extern char *_strduplicate(char *file, int line, const char *str);
  141. extern void *_reallocmem(char *file, int line, void *ptr, int size);
  142.  
  143. extern struct picture  *get_picture(), *unget_picture();
  144. extern struct event *get_event(), *unget_event();
  145. extern struct viewport *get_viewport(), *unget_viewport();
  146. extern struct field *get_field(), *unget_field();
  147. extern struct stmt *get_stmt();
  148. void unget_stmt();
  149. extern struct literal *get_literal(), *unget_literal();
  150. extern struct ccode *get_ccode(), *unget_ccode();
  151. extern struct link *find_name(struct link *first, char *name);
  152. extern void output(void);
  153. extern int GetPos(int *x, int *y);
  154. extern int skip_stmt(void);
  155. extern char *strip_quotes(char *str);
  156. extern char *strtoupper(char *str);
  157. extern void stmt_write(struct stmt *stmt, FILE *fp);
  158. void stmt_add(struct stmt **stmt, char *str, char *space);
  159. void debug(char *fmt, ...);
  160.  
  161. #ifdef SIGNAL_INT
  162. extern int cleanup(int sig);
  163. #else
  164. extern void cleanup(int sig);
  165. #endif
  166.  
  167. extern struct list list;    /* The list of everything    */
  168. extern char *filename;        /* Name of input file        */
  169.  
  170. #endif _/* COMP_H */
  171.  
  172.